///////////////////////////////////////////////////////////
//  IGameLogManager.h
//  Implementation of the Interface IGameLogManager
//  Created on:      12-Jan-2015 12:59:20 PM
//  Original author: Eng, Ahmed Yasser
///////////////////////////////////////////////////////////

#if !defined(EA_3E492548_7A7D_408b_9867_6E683495601D__INCLUDED_)
#define EA_3E492548_7A7D_408b_9867_6E683495601D__INCLUDED_

namespace EngineGame
{
	namespace EngineProfile
	{
		/**
		 * @author Eng, Ahmed Yasser
		 * @version 1.0
		 * @created 12-Jan-2015 12:59:20 PM
		 */
		class IGameLogManager
		{

		public:			EngineGame::EngineProfile::IGameLog *_IGameLog;
			IGameLogManager() {

			}

			virtual ~IGameLogManager() {

			}

			IGameLogManager(const IGameLogManager& theIGameLogManager) {

			}
			/**
			 * Create the logger that the application will use it in logging system messages
			 */
			virtual void createLogger() =0;
			/**
			 * Log the message to the current active logger
			 */
			virtual void logMessage() =0;
			/**
			 * Create the logger that the application will use it in logging system messages
			 * 
			 * @param logger    The log object that will be used in the logging, default is
			 * text logger in file (EngineGameLog.log)
			 */
			virtual void createLogger(IGameLog* logger) =0;
			/**
			 * Initialize the logging manager
			 */
			virtual void initLogManager() =0;
			/**
			 * Log the message to the current active logger
			 * 
			 * @param message    The message to be logged
			 */
			virtual void logMessage(std::string message) =0;
			/**
			 * Destroys the logging manager
			 */
			virtual void destroyLogManager() =0;

		};

	}

}
#endif // !defined(EA_3E492548_7A7D_408b_9867_6E683495601D__INCLUDED_)
